﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Business.Entity.Contabil.ClassesRelacoinadas;

namespace Bonesoft.Forms.Contabil.FormulariosRelacionados
{
    public partial class FormMesGerado : DevExpress.XtraEditors.XtraForm
    {
        public FormMesGerado()
        {
            InitializeComponent();
            mesGeradoBindingSource.DataSource = new MesGerado();
        }

        public MesGerado SolicitarMes()
        {
            ShowDialog();
            if (DialogResult == DialogResult.Cancel)
            {
                return null;
            }
            var m = (MesGerado)mesGeradoBindingSource.DataSource;
            string s = "Só é possível gerar os custos fixos para meses e anos" +
                       " iguais ou posteriores aos atuais.";
            
            if (m.Mes < DateTime.Now.Month && m.Ano <= DateTime.Now.Year)
            {
                MessageBox.Show(s);
                return null;
            }

            IEnumerable<MesGerado> pesquisaMes = MesGeradoRepository.GetList()
                .Where(gerado => gerado.Mes == m.Mes && gerado.Ano == m.Ano);
            if (pesquisaMes.Any())
            {
                MessageBox.Show("O mês já foi gerado.\n Por favor selecione outro mês " +
                                "e repita o processo");
                return null;
            }
            return (MesGerado)mesGeradoBindingSource.DataSource;
        }

        private void FormMesGerado_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Escape)
            {
                DialogResult = DialogResult.Cancel;
            }
        }

        private void cmdSalvar_Click(object sender, EventArgs e)
        {
            DialogResult= DialogResult.OK;
            Hide();
        }
    }
}